/**
 * 
 */
package com.thor.palmmall.rest.chart;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.thor.commons.exception.ThorServiceException;

/**
 * @author NuoSa
 *
 * @since 1.0
 */
@Path("/report")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface AChartService {

  @POST
  @Path("/monitorReport")
  AMonitorReport getMoitorReport(AMonitorParam monitorParam) throws ThorServiceException;

  @POST
  @Path("/storesReport")
  List<AAppMainReport> getStoreReport(ALoginInfo loginInfo) throws ThorServiceException;

  @POST
  @Path("/salesReport")
  List<ASalesReport> getSalesReport(AChartParam chartParam) throws ThorServiceException;

  @POST
  @Path("/rentalReport")
  ARentalReport getRentalReport(ARentalParam rentalParam) throws ThorServiceException;

  @POST
  @Path("/receiptReport")
  AReceiptReport getReceiptReport(AReceiptParam receiptParam) throws ThorServiceException;

  @POST
  @Path("/statistic/salesReportType")
  List<ASalesType> getSalesReportType(ASalesTypeParam salesTypeParam) throws ThorServiceException;

  @POST
  @Path("/ordinary/salesReportType")
  AOrdinarySalesType getOrdinarySalesReportType(AOrdinarySalesTypeParam salesTypeParam)
      throws ThorServiceException;

  @POST
  @Path("/passengersReport")
  List<APassengersReport> getPassengersReport(APassengersReportParam pasParam)
      throws ThorServiceException;

  @POST
  @Path(value = "/getSalesReport")
  List<ASalesReportData> getSalesReport(ASalesInputReportCondition condition)
      throws ThorServiceException;

  @POST
  @Path(value = "/maintain/static-report")
  AMaintainReportData maintainReport(AMaintainReportCondition condition)
      throws ThorServiceException;

  @POST
  @Path(value = "/maintain/repair-report")
  List<AMaintainRepairData> getRepairReport(AMaintainReportCondition condition)
      throws ThorServiceException;

  @POST
  @Path(value = "/maintain/category-report")
  List<AMaintainCategoryData> getCategoryReport(AMaintainReportCondition condition);
}
